// 兼容所有浏览器关闭页面方法
function ClosePage() {
if (navigator.userAgent.indexOf("MSIE") > 0) {
if (navigator.userAgent.indexOf("MSIE 6.0") > 0) {
window.opener = null;
window.close();
}
else {
window.open('', '_top');
window.top.close();
}
}
else if (navigator.userAgent.indexOf("Firefox") > 0) {
window.location.href = 'about:blank '; //火狐默认状态非window.open的页面window.close是无效的
//window.history.go(-2);
}
else {
window.opener = null;
window.open('', '_self', '');
window.close();
}
};
//指定数组,根据指定条件筛选,返回符合条件的数组
function h_query(datalist, filterobj) {
let result = [];
result = datalist.filter(item => {
let bo = true;
for(var k in filterobj) {
let k_val = filterobj[k];
let bo_ = item[k].toLowerCase().indexOf(k_val.toLowerCase()) > -1;
if (!bo_) {
return false;
}
}
return bo;
});
return result;
};
//拼接 GetUrl
function SplicingGetUrlToStr(url_, param) {
var urlstr = "";
if (url_.indexOf("?") != -1 ) {
for (p in param) {
url_ += "&" + p + "=" + encodeURI(param[p]);
}
}
else {
var url_param = "";
for (p in param) {
if (!url_param) {
url_param = p + "=" + encodeURI(param[p]);
}
else {
url_param += "&" + p + "=" + encodeURI(param[p]);
}
}
url_ += "?" + url_param;
}
urlstr = url_;
return urlstr;
}
function setpageHeight(table_el, array_el) {
var tableHeight_ = 0;
let clientHeight = document.documentElement.clientHeight;
let title_height = document.getElementsByClassName('topbar').length ? document.getElementsByClassName('topbar')[0].offsetHeight : 0;
let tabs_height = document.getElementsByClassName('el-tabs').length ? document.getElementsByClassName('el-tabs')[0].offsetHeight : 0;
let footer_height = document.getElementsByClassName('el-dialog__footer').length ? document.getElementsByClassName('el-dialog__footer')[0].offsetHeight : 0;
let header_height = document.getElementsByClassName('el-dialog__header').length ? document.getElementsByClassName('el-dialog__header')[0].offsetHeight : 0;
let pagination_height = 0;
if (table_el.getElementsByClassName('z_table_pagination').length) {
pagination_height = table_el.getElementsByClassName('z_table_pagination')[0].offsetHeight;
}
tableHeight_ = clientHeight - title_height - tabs_height - pagination_height - footer_height - header_height - 10;
if(array_el && array_el.length) {
array_el.map(el=>{
let el_height = el.offsetHeight;
tableHeight_ -= el_height;
})
}
return tableHeight_;
};
//
function settableHeight(root_el, pagesize) {
let tableHeight2_ = 0;
let header_height = root_el.getElementsByClassName('el-table__header-wrapper')[0].offsetHeight;
var row_height_ = 40;
if (root_el.getElementsByClassName('el-table__row')[0] && root_el.getElementsByClassName('el-table__row')[0].offsetHeight) {
row_height_ = root_el.getElementsByClassName('el-table__row')[0].offsetHeight + 0.5;
}
let row_height = row_height_;
let body_width = root_el.getElementsByClassName('el-table__body')[0].offsetWidth;
let body_wrapper_width = root_el.getElementsByClassName('el-table__body-wrapper')[0].offsetWidth;
tableHeight2_ = header_height + (row_height * pagesize) + pagesize/4.5;
if ((body_width - body_wrapper_width)>5){
tableHeight2_ += 20;
}
return tableHeight2_;
};
function createCode (code) {
var code_ = "";
//日期转为单号
var day = new Date();
var Year = 0;
var Month = 0;
var Day = 0;
Year = day.getFullYear();
Month = day.getMonth() + 1;
Day = day.getDate();
code_ += Year;
if (Month >= 10) {
code_ += Month;
}
else {
code_ += "0" + Month;
}
if (Day >= 10) {
code_ += Day;
}
else {
code_ += "0" + Day;
}
var random = 0;
do
random = Math.floor(Math.random()*10000);
while( random < 1000 );
if (code) {
code_ = code + code_+ random;
}
return code_;
}
function createDate () {
var aDate = new Date();
var date_ = dateFormat(aDate,"yyyy-MM-dd");
return date_;
}
function createDatetime () {
var aDate = new Date();
var date_ = dateFormat(aDate,"yyyy-MM-dd hh:mm:ss");
return date_;
}
function createYearByYear () {
var aDate = new Date();
var date_ = dateFormat(aDate,"yyyy") * 1;
var month_ = dateFormat(aDate,"MM") * 1;
var year = "";
if (month_ > 11 ) {
year = date_ + 1
}
else {
year = date_
}
return year;
}
function createYearByQuarter () {
var aDate = new Date();
var date_ = dateFormat(aDate,"yyyy") * 1;
var month_ = dateFormat(aDate,"MM") * 1;
var year = "";
if (month_ > 9 ) {
year = date_ + 1
}
else {
year = date_
}
return year;
}
function createQuarter () {
var aDate = new Date();
var date_ = dateFormat(aDate,"MM") * 1;
var quarter = "";
if (date_ < 4) {
quarter = 2
}
else if (date_ < 7) {
quarter = 3
}
else if (date_ < 10) {
quarter = 4
}
else {
quarter = 1
}
return quarter;
}
function createMonth () {
var aDate = new Date();
var date_ = dateFormat(aDate,"MM") * 1;
var month = "";
if(date_ > 11) {
month = 1
}else {
month = date_ + 1
}
return month;
}
/*********** default setting ************/
function getElementDefault(el) {
var defaultObj = {};
// 通用设置
if (el.ztypename) {
let ztypename = el.ztypename;
if (currencyDefault[ztypename]) {
let currencyDefaultObj = currencyDefault[ztypename];
for (var key in currencyDefaultObj) {
defaultObj[key] = currencyDefaultObj[key];
}
}
}
//自定义模板设置
if (el.zdefault) {
let zdefault = el.zdefault;
if (ElementDefault[zdefault]) {
let ElementDefaultObj = ElementDefault[zdefault];
for (var key in ElementDefaultObj) {
defaultObj[key] = ElementDefaultObj[key];
}
}
}
return defaultObj;
};
var ElTypes = {//可配置项
button: {//按键
ztypename: String,
zdefault: String,
small: String,
type: String,//default, primary, success
size: String,
icon: String,
nativeType: String,
loading: Boolean,
disabled: Boolean,
plain: Boolean,
autofocus: Boolean,
round: Boolean,
circle: Boolean,
},
};
//组件通用设置
var currencyDefault = {
ElButton: {
size: "mini",
type: "primary",//default
},
ElInput: {
size: "mini",
},
ElCascader: {
size: "mini",
},
ElSelect: {
size: "mini",
},
ElDatePicker: {
size: "mini",
},
ElInputNumber: {
size: "mini",
},
ElAutocomplete: {
size: "mini",
},
ElAutocompleteSuggestions: {
size: "mini",
},
};
//自定义模板设置
var ElementDefault = {
buttonmould_refresh: {
type: "success",
icon: "el-icon-refresh"
},
buttonmould1: {
size: "mini",
type: "success",
},
buttonmould2: {
size: "small",
type: "success",
},
buttonmould3: {
size: "medium",
type: "success",
}
};
//组件的格式化
formatter_json = window.top.formatter_json;
dateFormat = window.top.dateFormat;
formatter_money = window.top.formatter_money;
formatter_TF1 = window.top.formatter_TF1;
formatter_TF2 = window.top.formatter_TF2;
formatter_Target = window.top.formatter_Target;
formatter_CommitState = window.top.formatter_CommitState;
formatter_OrderState = window.top.formatter_OrderState;
formatter_Grade = window.top.formatter_Grade;
formatter_date = window.top.formatter_date;
formatter_isreconciliation = window.top.formatter_isreconciliation;
formatter_businessline = window.top.formatter_businessline;
formatter_matchstatus = window.top.formatter_matchstatus;
formatter_OTCorCF = window.top.formatter_OTCorCF;
formatter_saletype = window.top.formatter_saletype;
formatter_salesBusinessType = window.top.formatter_salesBusinessType;
formatter_pass = window.top.formatter_pass;
formatter_deliverySended = window.top.formatter_deliverySended;
formatter_deliveryStatus = window.top.formatter_deliveryStatus;
formatter_invoiceStatus = window.top.formatter_invoiceStatus;
formatter_returnType = window.top.formatter_returnType;
formatter_businessType = window.top.formatter_businessType;
formatter_agreeStatus = window.top.formatter_agreeStatus;
formatter_businessStatus = window.top.formatter_businessStatus;
formatter_demandProductState = window.top.formatter_demandProductState;
formatter_sourceType = window.top.formatter_sourceType;
formatter_invoiceType = window.top.formatter_invoiceType;
formatter_licenceType = window.top.formatter_licenceType;
formatter_produceType = window.top.formatter_produceType;
formatter_needType = window.top.formatter_needType;
formatter_TagPriceType = window.top.formatter_TagPriceType;
formatter_CashType = window.top.formatter_CashType;
formatter_RebateType = window.top.formatter_RebateType;
formatter_ControlType = window.top.formatter_ControlType;
formatter_transType = window.top.formatter_transType;
formatter_percentage = window.top.formatter_percentage;
formatter_settleType = window.top.formatter_settleType;
formatter_gender = window.top.formatter_gender;
formatter_rate = window.top.formatter_rate;
formatter_Receipt = window.top.formatter_Receipt;
function formatter_Splicing(row, column, cellValue, index) {
return row.sku = row.name + row.spec;
};
/*********** h-select ************/
Vue.component("h-select", {
template: [
'',
'',
'',
'{{itm.label}}',
'',
'',
'
',
'',
''].join(""),
props: {
datalist: Array
},
data() {
return {
visible: false,
selected: null
}
},
methods: {
fireitemselect(v) {
this.selected = v;
this.visible = false;
this.$emit('itemselect', v);
}
}
});
/*********** h-iconselect ************/
Vue.component("h-iconselect", {//图标点击下拉组件
template: ''+
''+
''+
'{{itm.label}}'+
''+
''+
'
'+
''+
'',
props: {
datalist: Array,
icon: String
},
data() {
return {
visible: false,
}
},
methods: {
fireitemselect(v) {
this.visible = false;
this.$emit('itemselect', v);
},
}
});
/*********** h-table ************/
Vue.component("h-table", {//列表组件1
template:
'
'+
' '+
' '+
' '+
' '+
' '+
' '+
' '+
' '+
' '+
' '+
' '+
' '+
' '+
' '+
' '+
// ':header-cell-style="{background:\'#FAFAFA\',color:\'black\',\'text-align\':\'center\'}"> '+
' '+
' '+
' '+
' '+
//////////////////
' '+
' '+
' '+
' '+
' '+
' '+
' '+
' '+
' '+
' '+
' '+
' '+
' '+
' '+
' '+
' {{ scope.row[tableField.field] }} '+
' '+
' '+
' '+
' '+
' '+
' {{scope.row[tableField.field]}} '+
' % '+
' '+
' '+
' '+
' {{scope.row[tableField.field]}} '+
' % '+
' '+
' '+
' 0 '+
' '+
' '+
''+
''+
'{{scope.row[tableField.field]}} | '+
''+
' '+
' | '+
'
'+
'
'+
' '+
' '+
' {{scope.row[tableField.field]}} '+
' {{tableField.defaultval}} '+
' '+
' {{scope.row[tableField.field] || (scope.row.z_h_notdefaultval && scope.row.z_h_notdefaultval[tableField.field]) ? scope.row[tableField.field] : tableField.defaultval}} '+
' '+
' '+
' {{tableField.formatter_f(scope.row, null, scope.row[tableField.field], null)}} '+
' '+
' '+
////////////////////
' '+
' '+
' '+
' '+
' '+
' '+
' '+
' '+
' '+
' '+
' '+
' '+
' '+
' '+
' '+
' '+
' '+
' {{ scope.row[tableField.field] }} '+
' '+
' '+
' '+
' '+
' '+
' {{scope.row[tableField.field]}} '+
' % '+
' '+
' '+
' '+
' {{scope.row[tableField.field]}} '+
' % '+
' '+
' '+
' 0 '+
' '+
' '+
''+
''+
'{{scope.row[tableField.field]}} | '+
''+
' '+
' | '+
'
'+
'
'+
' '+
' '+
' {{scope.row[tableField.field]}} '+
' {{tableField.defaultval}} '+
' '+
' {{scope.row[tableField.field] || (scope.row.z_h_notdefaultval && scope.row.z_h_notdefaultval[tableField.field]) ? scope.row[tableField.field] : tableField.defaultval}} '+
' '+
' '+
' '+
/* ' '+
' '+ */
' '+
'
'+
'
'+
'
![]()
'+
'
'+
'请添加数据 '+
'
'+
'
'+
'
'+
' '+
'
',
props: {
tableAttr: {
type: Object,
default: function(){
return {};
}
},
isOldContrast: {//是否对比差异isOldContrast//tableDataOld
type: Boolean,
default: false
},
tableDataOld: {//对比差异的历史数据
type: Object,
default: function(){
return {};
}
},
"layout": {//无数据的图片
type: String,
default: "total, sizes, prev, pager, next, jumper"
},
"tableFields": Array,//字段
"tableData": Array,//数据
"selectTableData": {//选中的数据
type: Array,
default: function(){
return [];
}
},
"url_img2": {//无数据的图片
type: String,
default: ""
},
"href": {//无数据的图片
type: String,
default: "table1"
},
"showSummary": {//是否在表尾显示合计行tableAttr
type: Boolean,
default: false
},
"tableloading": {//多选tableAttr
type: Boolean,
default: false
},
"isSelection": {//多选tableAttr
type: Boolean,
default: false
},
"isShowIndex": {//序号tableAttr
type: Boolean,
default: false
},
"isWithinEditTableData": {//表内编辑
type: Boolean,
default: false
},
"isEditTableData": {//编辑/删除按键
type: Boolean,
default: false
},
"isHighlightRow": {//选中高亮tableAttr
type: Boolean,
default: false
},
"isPagination": {//是否显示分页
type: Boolean,
default: true
},
"editTableButton": {//编辑界面行按键(编辑,删除)
type: Object,
default: function(){
return {
edit: {
isshow:true,
txt:"编辑"
},
del: {
isshow:true,
txt:"删除"
},
save: {
isshow:true,
txt:"保存"
},
}
}
},
tableHeight: {
type: Number,
default: 100
},
pagesize: {
type: Number,
default: 10
},
pagenum: {
type: Number,
default: 1
},
total: {
type: Number,
default: 0
},
},
data() {
return {
zpagesize: this.pagesize,
zpagenum: this.pagenum,
summaries: []
}
},
computed: {
isShowTable() {
if (this.$refs.ref_notTableData) {
this.setNotTableData();
}
return this.tableData.length > 0 ? true : true; //false;
},
doTableFields() {
this.tableFields.map(e=>{
if (e.formatterjson) {
e.formatter_f = function(a,b,c,d) {
var json_ = e.formatterjson;
return formatter_json(a,b,c,d, json_)
}
}
else if (e.formatter) {
if (e.formatter == "formatter_money") {
e.formatter_f = function(a,b,c,d) {return formatter_money(a,b,c,d)}
}
else if (e.formatter == "formatter_TF1") {
e.formatter_f = function(a,b,c,d) {return formatter_TF1(a,b,c,d)}
}
else if (e.formatter == "formatter_TF2") {
e.formatter_f = function(a,b,c,d) {return formatter_TF2(a,b,c,d)}
}
else if (e.formatter == "formatter_Target") {
e.formatter_f = function(a,b,c,d) {return formatter_Target(a,b,c,d)}
}
else if(e.formatter == "formatter_CommitState") {
e.formatter_f = function(a,b,c,d) {return formatter_CommitState(a,b,c,d)}
}
else if(e.formatter == "formatter_OrderState") {
e.formatter_f = function(a,b,c,d) {return formatter_OrderState(a,b,c,d)}
}
else if(e.formatter == "formatter_Grade") {
e.formatter_f = function(a,b,c,d) {return formatter_Grade(a,b,c,d)}
}
else if(e.formatter == "formatter_date") {
e.formatter_f = function(a,b,c,d) {return formatter_date(a,b,c,d)}
}
else if(e.formatter == "formatter_Splicing") {
e.formatter_f = function(a,b,c,d) {return formatter_Splicing(a,b,c,d)}
}
else if(e.formatter == "formatter_isreconciliation") {
e.formatter_f = function(a,b,c,d) {return formatter_isreconciliation(a,b,c,d)}
}
else if(e.formatter == "formatter_businessline") {
e.formatter_f = function(a,b,c,d) {return formatter_businessline(a,b,c,d)}
}
else if(e.formatter == "formatter_matchstatus") {
e.formatter_f = function(a,b,c,d) {return formatter_matchstatus(a,b,c,d)}
}
else if(e.formatter == "formatter_OTCorCF") {
e.formatter_f = function(a,b,c,d) {return formatter_OTCorCF(a,b,c,d)}
}
else if(e.formatter == "formatter_saletype") {
e.formatter_f = function(a,b,c,d) {return formatter_saletype(a,b,c,d)}
}
else if(e.formatter == "formatter_salesBusinessType") {
e.formatter_f = function(a,b,c,d) {return formatter_salesBusinessType(a,b,c,d)}
}
else if(e.formatter == "formatter_pass") {
e.formatter_f = function(a,b,c,d) {return formatter_pass(a,b,c,d)}
}
else if(e.formatter == "formatter_deliverySended") {
e.formatter_f = function(a,b,c,d) {return formatter_deliverySended(a,b,c,d)}
}
else if(e.formatter == "formatter_deliveryStatus") {
e.formatter_f = function(a,b,c,d) {return formatter_deliveryStatus(a,b,c,d)}
}
else if(e.formatter == "formatter_invoiceStatus") {
e.formatter_f = function(a,b,c,d) {return formatter_invoiceStatus(a,b,c,d)}
}
else if(e.formatter == "formatter_returnType") {
e.formatter_f = function(a,b,c,d) {return formatter_returnType(a,b,c,d)}
}
else if(e.formatter == "formatter_businessType") {
e.formatter_f = function(a,b,c,d) {return formatter_businessType(a,b,c,d)}
}
else if(e.formatter == "formatter_agreeStatus") {
e.formatter_f = function(a,b,c,d) {return formatter_agreeStatus(a,b,c,d)}
}
else if(e.formatter == "formatter_businessStatus") {
e.formatter_f = function(a,b,c,d) {return formatter_businessStatus(a,b,c,d)}
}
else if(e.formatter == "formatter_gender") {
e.formatter_f = function(a,b,c,d) {return formatter_gender(a,b,c,d)}
}
else if(e.formatter == "formatter_demandProductState") {
e.formatter_f = function(a,b,c,d) {return formatter_demandProductState(a,b,c,d)}
}
else if(e.formatter == "formatter_sourceType") {
e.formatter_f = function(a,b,c,d) {return formatter_sourceType(a,b,c,d)}
}
else if(e.formatter == "formatter_invoiceType") {
e.formatter_f = function(a,b,c,d) {return formatter_invoiceType(a,b,c,d)}
}
else if(e.formatter == "formatter_licenceType") {
e.formatter_f = function(a,b,c,d) {return formatter_licenceType(a,b,c,d)}
}
else if(e.formatter == "formatter_produceType") {
e.formatter_f = function(a,b,c,d) {return formatter_produceType(a,b,c,d)}
}
else if(e.formatter == "formatter_needType") {
e.formatter_f = function(a,b,c,d) {return formatter_needType(a,b,c,d)}
}
else if(e.formatter == "formatter_TagPriceType") {
e.formatter_f = function(a,b,c,d) {return formatter_TagPriceType(a,b,c,d)}
}
else if(e.formatter == "formatter_CashType") {
e.formatter_f = function(a,b,c,d) {return formatter_CashType(a,b,c,d)}
}
else if(e.formatter == "formatter_RebateType") {
e.formatter_f = function(a,b,c,d) {return formatter_RebateType(a,b,c,d)}
}
else if(e.formatter == "formatter_ControlType") {
e.formatter_f = function(a,b,c,d) {return formatter_ControlType(a,b,c,d)}
}
else if(e.formatter == "formatter_transType") {
e.formatter_f = function(a,b,c,d) {return formatter_transType(a,b,c,d)}
}
else if(e.formatter == "formatter_percentage") {
e.formatter_f = function(a,b,c,d) {return formatter_percentage(a,b,c,d)}
}
else if(e.formatter == "formatter_settleType") {
e.formatter_f = function(a,b,c,d) {return formatter_settleType(a,b,c,d)}
}
else if(e.formatter == "formatter_Receipt") {
e.formatter_f = function(a,b,c,d) {return formatter_Receipt(a,b,c,d)}
}
}
})
return this.tableFields;
}
},
mounted() {
this.setNotTableData();
},
watch: {
selectTableData(newVal, oldVal){
if (this.selectTableData && this.selectTableData.length) {
this.toggleSelection(this.selectTableData);
}
else {
this.toggleSelection();
}
},
},
methods: {
tableRowClassName({row, rowIndex}) {
if (row.h_classname) {
return row.h_classname;
}
return '';
},
cellClass(obj) {
let field = obj.column.property;
let row_ = this.doTableFields.filter(item => {
return item.field == field;
});
let class_ = "";
//业务上的样式,如:可点击,存在上下限等
if(row_.length > 0 && row_[0].iscellclick) {
class_ = "h_cellclick";
}
if(row_.length > 0 && (row_[0].maxval || row_[0].minval)) {
if((row_[0].maxval && obj.row[field] * 1 > row_[0].maxval * 1) || (row_[0].minval && obj.row[field] * 1 < row_[0].minval * 1)) {
class_ += " h_overflowval";
}
else class_ += " h_notoverflowval";
}
if(row_.length > 0 && row_[0].formatter == "formatter_TF2") {
if(obj.row[field] == "T") {
class_ += " h_stamp";
}
}
if (row_.length > 0 && row_[0].iscellclick && !row_[0].isclick) {
if(!obj.row[field] || obj.row[field] == "") {
class_ += " h_notclick";
}
//notclick_val: ["input", "aaa"]
if (row_[0].notclick_val && row_[0].notclick_val.length) {
var bo_ = false;
var val_ = obj.row[field];
row_[0].notclick_val.map(v=>{
if (val_ == v) {
bo_ = true;
}
});
if (bo_) {
class_ += " h_notclick";
}
}
//notclick_bindfield: [{field: "folw_id", val: null},{}]
if (row_[0].notclick_bindfield && row_[0].notclick_bindfield.length) {
var bo_ = false;
row_[0].notclick_bindfield.map(b=>{
var val_ = obj.row[b.field];
if (val_ == b.val) {
bo_ = true;
}
});
if (bo_) {
class_ += " h_notclick";
}
}
}
//如果存在自定义的class
if(row_.length > 0 && row_[0].cssname) {
class_ += " " + row_[0].cssname;
}
//如果存在差异则背景高亮isOldContrast//tableDataOld
if(this.isOldContrast) {
var row_n = obj.row;
if (this.tableDataOld[row_n.id]) {//如果存在历史数据
var row_o = this.tableDataOld[row_n.id];
if (row_n[field] != row_o[field]) {
class_ += "z_contrast_tablecall";
}
}
}
return class_;
},
setNotTableData() {
var me = this;
if (this.tableData.length == 0) {
//this.$refs.ref_notTableData.style['height'] = this.tableHeight + "px";
//this.$refs.ref_notTableData.style['min-height'] = this.tableHeight + "px";
//this.$refs.ref_notTableData.style['padding-top'] = (this.tableHeight * 0.3)+"px";
this.$refs.ref_notTableData.style['width'] = "100%";
}
else {
//设置默认值
this.tableData.map(d=>{
me.tableFields.map(f=>{
//isassignment: 是否默认值替换原值 ,如果有保存会被替换
if (!d[f.field] && f.defaultval && f.isassignment) {
//defaultval_filter: 默认值的条件第一层数组的元素是or, 里面的数组元素是and
//type: 是条件,如果没有则是等于val值时可替换, "isnull"为空时,"isnotnull" 不为空时
if (f.defaultval_filter) {//:[[{field: "", val: ""},{field: "", val: ""}], [{}]]
var defaultval_filter_ = f.defaultval_filter;
if (f.defaultval_filter instanceof String) {
defaultval_filter_ = JSON.parse(f.defaultval_filter);
}
defaultval_filter_.map(m=>{
var bo_m = true;
m.map(mf=>{
if (!mf.type) {
if (d[mf.field] != mf.val) {
bo_m = false
}
}
else if (mf.type == "isnull") {
if (d[mf.field]) {
bo_m = false
}
}
else if (mf.type == "isnotnull") {
if (!d[mf.field]) {
bo_m = false
}
}
});
if (bo_m) {
d[f.field] = f.defaultval
}
else {
//单条设置不显示默认值的字段
if (!d.z_h_notdefaultval) {
d.z_h_notdefaultval = {};
}
d.z_h_notdefaultval[f.field] = true;
}
})
}
else {
d[f.field] = f.defaultval
}
}
})
});
this.$refs.ref_notTableData.style['height'] = "0px";
this.$refs.ref_notTableData.style['min-height'] = "0px";
this.$refs.ref_notTableData.style['padding-top'] = "0px";
this.$refs.ref_notTableData.style['width'] = "0px";
}
},
rowClick(row, column, event) {
let obj = {
row: row,
column: column,
event: event
}
this.$emit('row-click', obj);
},
headerCellStyle(obj) {
var aa = obj;
var style_ = {
'background':'#FAFAFA',
'color':'black',
'text-align':'center'
}
let field = obj.column.property;
let row_ = this.doTableFields.filter(item => {
return item.field == field;
});
if (row_.length && row_[0].headercolor) {
style_.background = row_[0].headercolor;
}
return style_;
},
rowDblclick(row, column, event) {
let obj = {
row: row,
column: column,
event: event
}
this.$emit('row-dblclick', obj);
},
cellClick(row, column, cell, event) {
let obj = {
row: row,
column: column,
cell: cell,
event: event
}
this.$emit('cell-click', obj);
},
handleSelectionChange(selection) {
this.$emit('selection-change', selection);
},
editDataRow(code, scope){
if (code == "edit") {
this.$emit('edit-data', scope);
}
else if (code == "delete") {
this.$emit('del-data', scope);
}
},
cellInputChange(scope) {//row, column, $index 和 store(table 内部的状态管理)
let field = scope.column.property;
this.$emit('cell-input-change', scope);
},
cellSelectChange(scope) {
let field = scope.column.property;
this.$emit('cell-select-change', scope);
},
cellButtonClick(scope) {
let field = scope.column.property;
this.$emit('cell-button-click', scope);
},
querySearch(queryString, cb, scope, tableField) {
let field = scope.column.property;
var obj = {
queryString: queryString,
cb: cb,
scope: scope
}
var inputoptions = tableField.inputoptions;
var results = queryString ? inputoptions.filter(this.createFilter(queryString)) : inputoptions;
cb(results);
this.$emit('cell-query-search', obj);
},
createFilter(queryString) {
return (restaurant) => {
return (restaurant.value.toLowerCase().indexOf(queryString.toLowerCase()) === 0);
};
},
showpopup(scope) {
let field = scope.column.property;
this.$emit('cell-show-popup', scope);
},
getSummaries(param) {
const { columns, data } = param;
const sums = [];
var sumfields = {};
var issumfields = false;
this.tableFields.map(e=>{
if (e.istablesum) {
sumfields[e.field] = e;
issumfields = true;
}
});
if (issumfields) {
columns.forEach((column, index) => {
if (index === 0) {
sums[index] = '汇总';
return;
}
if (sumfields[column.property]) {
const values = data.map(item => Number(item[column.property]));
if (!values.every(value => isNaN(value))) {
sums[index] = values.reduce((prev, curr) => {
const value = Number(curr);
if (!isNaN(value)) {
return prev + curr;
}
else {
return prev;
}
}, 0);
var field = sumfields[column.property];
if (field.formatter && field.formatter=="formatter_money") {
sums[index] = formatter_money(null, null, sums[index]);
}
else {
sums[index] += '';
}
}
else {
sums[index] = '';
}
}
else sums[index] = '';
});
}
return sums;
},
visibleChange(isshow, obj) {//下拉展开事件
if (isshow) {
this.$emit("visible-change", obj);
}
},
/* remoteMethod(query, obj) {
if (query !== '') {
this.loading_filterable = true;
setTimeout(() => {
this.loading_filterable = false;
this.options = this.list.filter(item => {
return item.label.toLowerCase()
.indexOf(query.toLowerCase()) > -1;
});
}, 200);
} else {
this.options = [];
}
}, */
operate_(row, column, cellValue, index) {
if(cellValue === "create") {
return "新增数据";
}
else if(cellValue === "delete") {
return "删除数据";
}
else if(cellValue === "update") {
return "修改数据";
}
else return "";
},
status_(row, column, cellValue, index) {
if (cellValue == "working"){
return "正在审批";
}
else if(cellValue == "refuse") {
return "待修改";
}
else if(cellValue == "open") {
return "申请成功";
}
else if(cellValue == "close") {
return "撤销申请";
}
return "";
},
toggleSelection(array, iscancelselect) {
var ref = this.href;
if (iscancelselect && array) {
array.forEach(id_ => {
this.tableData.map(e=>{
if(id_ == e.id) {
this.$refs[ref].toggleRowSelection(e,false);
}
});
});
}
else if (array) {
array.forEach(id_ => {
this.tableData.map(e=>{
if(id_ == e.id) {
this.$refs[ref].toggleRowSelection(e,true);
}
});
});
} else {
this.$refs[ref].clearSelection();
}
},
toggleSelectionByRow(row) {
var ref = this.href;
this.$refs[ref].toggleRowSelection(row,true);
},
/* 每页条数变更事件 */
handleSizeChange(val) {
this.zpagesize = val;
let page = {
pagesize: this.zpagesize,
pagenum: this.zpagenum
}
this.$emit('get-data', page);
},
/* 页码变更事件*/
handleCurrentChange(val) {
this.zpagenum = val;
let page = {
pagesize: this.zpagesize,
pagenum: this.zpagenum
}
this.$emit('get-data', page);
},
}
});
/*********** h-form ************/
Vue.component("h-form", {//表单组件1
/* template:
'', */
template:
'',
props: {
formAttr: Object,
tableFields: Array,
isOldContrast: {//是否对比差异
type: Boolean,
default: false
},
formDataOld: {//对比差异的历史数据
type: Object,
default: function(){
return {};
}
},
isEndColspan: {//是否最后一行自动铺满
type: Boolean,
default: true
},
formData: Object,
"href": {//无数据的图片
type: String,
default: "form1"
},
disabled: {
type: Boolean,
default: false
},
width: {
type: String,
default: "100%"
},
},
data() {
return {
isRefresh: true,
tableFieldsFormat: [],
fromFieldObj: {},
formFieldsObj: {},
record: null,
formDataData: {},
formDataFace: {},
}
},
computed: {
tableFields2() {
if(this.formAttr && this.tableFields.length > 0) {
this.formLayout();
}
}
},
watch: {
tableFields() {
if(this.formAttr && this.tableFields.length > 0) {
this.formLayout();
}
},
formData() {
if(this.formData) {
this.formDataRecord();
}
}
},
mounted() {
if(this.formAttr && this.tableFields.length > 0) {
this.formLayout();
}
},
methods: {
formLayout() {
//表单布局设置
let columnnumber_ = this.formAttr.columnnumber;
let tableFieldsFormat_ = [];
let rowObj_ = {};
let children_ = [];
let i = 0;
let field_i = 0;
let tableFields_ = clone(this.tableFields);
let formFieldsObj_ = {};
for (var r=0; r columnnumber_) {//如果合并列大于表单设置列数
field_.colspan = columnnumber_;
}
field_i += field_.colspan ? field_.colspan : 1;//如果有合并列数, 默认为1
if (field_i == columnnumber_) {//列数满一行
children_.push(field_);
i = columnnumber_;
}
else {//不满一行, 看是否存在下一属性,
//若有则看已有列数加下一合并列数是否超过设置列数,若超了则自动调整该属性的合并列,使下一属性换行。
//若没有下一属性,则调整该属性合并列
let nxt_r = r + 1;
let field_nxt = {};
if(nxt_r < tableFields_.length) {
for (var nxt_j = nxt_r; nxt_j < tableFields_.length; nxt_j++) {
let field_nxtj = tableFields_[nxt_j];
if(field_nxtj.isshow!="T") {
continue;
}
else {
field_nxt = field_nxtj;
break
}
}
}
if (field_nxt.field) {
//let field_nxt = tableFields_[nxt_r];
if(field_nxt.colspan) {
let field_i_nxt = field_i + field_nxt.colspan;
if (field_i_nxt > columnnumber_) {
field_.colspan = columnnumber_ - i;
children_.push(field_);
i = columnnumber_;
}
else {
children_.push(field_);
i++;
}
}
else {
children_.push(field_);
i++;
}
}
else {
if (this.isEndColspan) {
field_.colspan = columnnumber_ - i;
}
children_.push(field_);
i = columnnumber_;
}
}
if (i == columnnumber_) {//列数满一行,保留该行属性,新建下一空行
rowObj_.children = children_;
tableFieldsFormat_.push(rowObj_);
rowObj_ = {};
children_ = [];
i = 0;
field_i = 0;
}
}
this.tableFieldsFormat = tableFieldsFormat_;
this.formDataRecord();
},
formDataRecord() {
/* if (this.formAttr && this.formAttr.formatter && this.formData) {
this.formAttr.formatter(this.formData, this.tableFields);
} */
let me = this;
if (this.formData) {
this.record = new Record(me);
this.record.setData(this.formData);
this.formDataData = this.formData;//this.record.getData();
this.rebate_available = this.formData.rebate_available;
this.formDataFace = this.record.getFace();
}
},
cellFaceClick(fieldObj) {
var fromFieldObj_ = clone(this.fromFieldObj);
if (fromFieldObj_[fieldObj.field].isEdit){
return;
}
this.record.setEditData(this.formDataData);
this.record.apply();
this.formDataFace = this.record.getFace();
for (var field in fromFieldObj_) {
fromFieldObj_[field].isEdit = false;
}
if (!fieldObj.disabled && !this.disabled && !this.formAttr.disabled) {
fromFieldObj_[fieldObj.field].isEdit = true;
}
this.fromFieldObj = fromFieldObj_;
},
refresh() {
this.isRefresh = false;
this.isRefresh = true;
},
showpopup(obj) {//弹窗弹出事件
let val = this.formDataData[obj.field];
let popupObj = {
obj: obj,
val: val
};
this.$emit('show-popup', popupObj);
},
formCallClick(obj) {//指定属性值点击事件
let val = this.formDataData[obj.field];
let popupObj = {
obj: obj,
val: val
};
this.$emit('formcall-click', popupObj);
},
formCallClickBySpan(obj) {//指定属性值点击事件
let val = this.formDataData[obj.field];
let popupObj = {
obj: obj,
val: val
};
this.$emit('formcallspan-click', popupObj);
},
buttonClick(obj) {//按键点击事件
let val = this.formDataData[obj.field];
let popupObj = {
obj: obj,
val: val
};
this.$emit('button-click', popupObj);
},
setFormValByField(field, val) {
this.formDataData[field] = val;
this.isRefresh = false;
this.isRefresh = true;
},
setFormOptionsByField(fieldobj, result) {
let tableFieldsFormat_ = this.tableFieldsFormat;
tableFieldsFormat_.map(item => {
item.children.map(item2 => {
if (item2.field.toLowerCase().indexOf(fieldobj.field.toLowerCase()) > -1) {
item2.options = result;
}
});
});
this.tableFieldsFormat = tableFieldsFormat_;
},
visibleChange(isshow, obj) {//下拉展开事件
if (isshow) {
//let val = this.formDataData[obj.field];
//let url = obj.dataurl;
this.$emit("visible-change", obj);
//根据url请求重新获取选择项
/* obj.options = [
{label: "选项1", value:"code1"},
{label: "选项2", value:"code2"},
{label: "选项3", value:"code3"},
{label: "选项4", value:"code4"}
]; */
/* let data = this.formData;
let options = url.split("?");
let parendfield = options[1].split("=");
let optionslist = dataRoot.database[options[0]];
let result = clone(optionslist);
if (obj.selectparent) {
let parentval = data[obj.selectparent];
result = optionslist.filter(item => {
if (!parentval) {
return false;
}
return item[parendfield[1]].toLowerCase().indexOf(parentval.toLowerCase()) > -1;
});
}
obj.options = result; */
/* var obj_ = {
fieldobj: obj,
data: this.formData
}
this.$emit('visible-change', obj_); */ //obj.options =
}
},
formchange(val, obj) {
if (typeof(val) == "string") {
//去除两端的空格
this.formData[obj.field] = val = val.replace(/(^\s*)|(\s*$)/g, "");
//去除中间的回车换行
//this.formData[obj.field] = val = val.replace(/[\r\n]/g,"");
}
var obj_ = {
fieldobj: obj,
data: this.formData
}
this.$emit("form-change", obj_);
},
isformcheckboxchange(val, obj) {
var obj_ = {
fieldobj: obj,
data: this.formData
}
this.$emit("form-checkbox-change", obj_);
},
ischeckboxchange(val, obj) {
obj.disabled = !val;
},
ischeckboxchangeToEdit(val, obj) {
obj.disabled = !val;
this.cellFaceClick(obj);
},
selectChange(val, obj) {
this.formDataData[obj.field] = val;
let me = this;
if (obj.selectchildren) {
obj.selectchildren.map(e=>{
let tableFieldsFormat_ = me.tableFieldsFormat;
tableFieldsFormat_.map(item => {
item.children.map(item2 => {
if (item2.field.toLowerCase().indexOf(e.toLowerCase()) > -1) {
if(item2.ismultiple) {
me.formDataData[e] = [];
}
else {
me.formDataData[e] = "";
}
}
});
});
});
}
var obj_ = {
fieldobj: obj,
data: this.formData
}
this.$emit("select-change", obj_);
this.isRefresh = false;
this.isRefresh = true;
},
checkForm() {
var ref = this.href;
var bo_ = true;
this.$refs[ref].validate((valid) => {
if (valid) {
} else {
bo_ = false;
}
});
return bo_;
},
}
});
/*********** h-form-filter ************/
Vue.component("h-form-filter", {//表单组件2(查询)
template:
'',
props: {
formAttr: Object,
tableFields: Array,
formData: Object,
isReduce: {//是否允许展开
type: Boolean,
default: false
},
isFormOpen: {//是否展开
type: Boolean,
default: true
},
isbuttonquery: {
type: Boolean,
default: true
},
disabled: {
type: Boolean,
default: false
},
buttonloading: {//按键的转圈圈
type: Boolean,
default: false
},
width: {
type: String,
default: "100%"
},
"href": {//无数据的图片
type: String,
default: "form1"
},
},
data() {
return {
isRefresh: true,
tableFieldsFormat: [],
z_isformOpen: true,//是否展开
}
},
computed: {
tableFields2() {
if(this.formAttr && this.tableFields.length > 0) {
this.formLayout();
}
}
},
watch: {
tableFields() {
if(this.formAttr && this.tableFields.length > 0) {
this.formLayout();
}
}
},
mounted() {
this.z_isformOpen = this.isFormOpen;
if(this.formAttr && this.tableFields.length > 0) {
this.formLayout();
}
},
methods: {
formLayout() {
if (this.isReduce) {
this.doFormOpenReduce();
}
else {
var tableFields_open_ = clone(this.tableFields);
this.doFormLayout(tableFields_open_);
}
},
formOpenReduce() {
this.z_isformOpen = !this.z_isformOpen;
this.doFormOpenReduce();
},
doFormOpenReduce() {
var me = this;
if (this.z_isformOpen) {//展开
//获取全部字段
var tableFields_open_ = clone(this.tableFields);
//表单布局设置
this.doFormLayout(tableFields_open_, function() {
//如果有表格则表格高度设置
me.$emit("on-formlayout-after");
});
}
else {//收起
//获取收起后字段
var tableFields_open_ = [];
this.tableFields.map(t=>{
if (t.isopenshow) {
tableFields_open_.push(t);
}
});
if (tableFields_open_.length == 0 && this.tableFields.length > 0) {
tableFields_open_.push(this.tableFields[0]);
}
//表单布局设置
this.doFormLayout(tableFields_open_, function() {
//如果有表格则表格高度设置
me.$emit("on-formlayout-after");
});
}
},
doFormLayout(tableFields, callback) {
//表单布局设置
let columnnumber_ = this.formAttr.columnnumber;
let tableFieldsFormat_ = [];
let rowObj_ = {};
let children_ = [];
let i = 0;
let field_i = 0;
let tableFields_ = clone(tableFields);
let button_ = {isshow: "T", field: "id"};
if(tableFields_) {
tableFields_.push(button_);
}
for (var r=0; r columnnumber_) {//如果合并列大于表单设置列数
field_.colspan = columnnumber_;
}
field_i += field_.colspan ? field_.colspan : 1;//如果有合并列数, 默认为1
if (field_i == columnnumber_) {//列数满一行
children_.push(field_);
i = columnnumber_;
}
else {//不满一行, 看是否存在下一属性,
//若有则看已有列数加下一合并列数是否超过设置列数,若超了则自动调整该属性的合并列,使下一属性换行。
//若没有下一属性,则调整该属性合并列
let nxt_r = r + 1;
let field_nxt = {};
if(nxt_r < tableFields_.length) {
for (var nxt_j = nxt_r; nxt_j < tableFields_.length; nxt_j++) {
let field_nxtj = tableFields_[nxt_j];
if(field_nxtj.isshow!="T") {
continue;
}
else {
field_nxt = field_nxtj;
break
}
}
}
if (field_nxt.field) {
//let field_nxt = tableFields_[nxt_r];
if(field_nxt.colspan) {
let field_i_nxt = field_i + field_nxt.colspan;
if (field_i_nxt > columnnumber_) {
field_.colspan = columnnumber_ - i;
children_.push(field_);
i = columnnumber_;
}
else {
children_.push(field_);
i++;
}
}
else {
children_.push(field_);
i++;
}
}
else {
field_.colspan = columnnumber_ - i;
children_.push(field_);
i = columnnumber_;
}
}
if (i == columnnumber_) {//列数满一行,保留该行属性,新建下一空行
rowObj_.children = children_;
tableFieldsFormat_.push(rowObj_);
rowObj_ = {};
children_ = [];
i = 0;
field_i = 0;
}
}
this.tableFieldsFormat = tableFieldsFormat_;
if (callback) {
this.$nextTick(function(){
callback();
})
}
},
h_onQuery() {
this.$emit("on-query");
},
h_onInitQuery() {
this.$emit("on-init-query");
},
h_onEditQuery() {
this.$emit("on-edit-query");
},
refresh() {
this.isRefresh = false;
this.isRefresh = true;
},
showpopup(obj) {//弹窗弹出事件
let val = this.formData[obj.field];
let popupObj = {
obj: obj,
val: val
};
this.$emit('show-popup', popupObj);
},
setFormValByField(field, val) {
this.formData[field] = val;
this.isRefresh = false;
this.isRefresh = true;
},
setFormOptionsByField(fieldobj, result) {
let tableFieldsFormat_ = this.tableFieldsFormat;
tableFieldsFormat_.map(item => {
item.children.map(item2 => {
if (item2.field.toLowerCase().indexOf(fieldobj.field.toLowerCase()) > -1) {
item2.options = result;
}
});
});
this.tableFieldsFormat = tableFieldsFormat_;
},
visibleChange(isshow, obj) {//下拉展开事件
if (isshow) {
//let val = this.formData[obj.field];
//let url = obj.dataurl;
this.$emit("visible-change", obj);
//根据url请求重新获取选择项
/* obj.options = [
{label: "选项1", value:"code1"},
{label: "选项2", value:"code2"},
{label: "选项3", value:"code3"},
{label: "选项4", value:"code4"}
]; */
/* let data = this.formData;
let options = url.split("?");
let parendfield = options[1].split("=");
let optionslist = dataRoot.database[options[0]];
let result = clone(optionslist);
if (obj.selectparent) {
let parentval = data[obj.selectparent];
result = optionslist.filter(item => {
if (!parentval) {
return false;
}
return item[parendfield[1]].toLowerCase().indexOf(parentval.toLowerCase()) > -1;
});
}
obj.options = result; */
/* var obj_ = {
fieldobj: obj,
data: this.formData
}
this.$emit('visible-change', obj_); */ //obj.options =
}
},
formchange(val, obj) {
var obj_ = {
fieldobj: obj,
data: this.formData
}
//this.$emit("form-change", obj_);
this.$emit("on-formchange", obj_);
},
ischeckboxchange(val, obj) {
obj.disabled = !val;
},
selectChange(val, obj) {
this.formData[obj.field] = val;
let me = this;
if (obj.selectchildren) {
obj.selectchildren.map(e=>{
let tableFieldsFormat_ = me.tableFieldsFormat;
tableFieldsFormat_.map(item => {
item.children.map(item2 => {
if (item2.field.toLowerCase().indexOf(e.toLowerCase()) > -1) {
if(item2.ismultiple) {
me.formData[e] = [];
}
else {
me.formData[e] = "";
}
}
});
});
});
}
var obj_ = {
fieldobj: obj,
data: this.formData
}
//this.$emit("select-change", obj_);
this.$emit("on-formchange", obj_);
this.isRefresh = false;
this.isRefresh = true;
},
checkForm() {
var ref = this.href;
var bo_ = true;
this.$refs[ref].validate((valid) => {
if (valid) {
} else {
bo_ = false;
}
});
return bo_;
},
}
});
/* ********** */
Root = window.top.Root;
RootRole = window.top.RootRole;
dataRoot = window.top.dataRoot;
dataRootFields = window.top.dataRootFields;
Server = window.top.Server;
//dataRoot_lxc = window.top.dataRoot_lxc;
//dataRoot_wxy = window.top.dataRoot_wxy;
function getSetting(pageName) {
var roleCode = Root.role.code;
var result = { page: {}, buttons: {} };
if (!setting) {
return result;
}
var pageSetting = setting[pageName];
if (!pageSetting) {
return result;
}
result.page = pageSetting.page;
var btnOptions = pageSetting.buttons;
var buttons = result.buttons;
for (var i = 0; i < btnOptions.length; i++) {
var option = btnOptions[i];
if (option.isVisible && !arrayContains(option.isVisible, roleCode)) {
continue;
}
var button = buttons[option.code] = {};
button.disabled = !option.isActive || !arrayContains(option.isActive, roleCode);
}
return result;
}
function arrayContains(array, value) {
if (!array || !value) {
return false;
}
var bo_ = false;
for (var i = 0; i < array.length; i++) {
value.map(e=>{
if (e == array[i]) {
bo_ = true;
}
});
}
return bo_;
}